﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace Tiscs.Practices.Web.Providers.Entities
{
    /// <summary>
    /// 角色实体类。
    /// </summary>
    public class RoleEntity
    {
        /// <summary>
        /// 角色名称最大长度。
        /// </summary>
        public const int RoleNameMaxLength = 256;

        /// <summary>
        /// 角色描述最大长度。
        /// </summary>
        public const int DescriptionMaxLength = 256;
        

        /// <summary>
        /// 角色唯一标识。
        /// </summary>
        [Key]
        public Guid RoleId { get; set; }

        /// <summary>
        /// 应用程序唯一标识。
        /// </summary>
        public Guid ApplicationId { get; set; }

        /// <summary>
        /// 角色名称。
        /// </summary>
        [Required]
        [StringLength(RoleNameMaxLength)]
        public string RoleName { get; set; }

        /// <summary>
        /// 角色描述。
        /// </summary>
        [StringLength(DescriptionMaxLength)]
        public string Description { get; set; }

        /// <summary>
        /// 属于该角色的用户列表。
        /// </summary>
        public virtual ICollection<UserEntity> Users { get; set; } = new List<UserEntity>();

        /// <summary>
        /// 角色所属的应用程序。
        /// </summary>
        public virtual ApplicationEntity Application { get; set; }
    }
}
